Platform Explorer / Nuxeo Platform 6.0

Component org.nuxeo.ecm.directory.sql.SQLDirectoryFactory

Documentation

SQL-based implementation for NXDirectory

Implementation

Class: org.nuxeo.ecm.directory.sql.SQLDirectoryFactory

Extension Points

Contributions

XML Source

<?xml version="1.0"?>
<component name="org.nuxeo.ecm.directory.sql.SQLDirectoryFactory">

  <implementation class="org.nuxeo.ecm.directory.sql.SQLDirectoryFactory" />

  <require>org.nuxeo.ecm.directory.DirectoryServiceImpl</require>

  <documentation>
    SQL-based implementation for NXDirectory
  </documentation>

  <extension target="org.nuxeo.ecm.directory.DirectoryServiceImpl"
    point="factoryDescriptor">
    <factoryDescriptor component="org.nuxeo.ecm.directory.sql.SQLDirectoryFactory" />
  </extension>

  <extension-point name="directories">
    <documentation>
      This extension point can be used to register new SQL-based
      directories. The
      extension can contain any number of directories
      declarations of the form:
      <code>
        <directory name="userDirectory">
          <schema>vocabulary</schema>
          <dataSource>java:/nxsqldirectory</dataSource>
          <table>t</table>
          <nativeCase>false</nativeCase>
          <idField>username</idField>
          <passwordField>password</passwordField>
          <passwordHashAlgorithm>SSHA</passwordHashAlgorithm>
          <autoincrementIdField>false</autoincrementIdField>
          <createTablePolicy>on_missing_columns</createTablePolicy>
          <dataFile>setup-hsqldb.csv</dataFile>
          <dataFileCharacterSeparator>,</dataFileCharacterSeparator>
          <querySizeLimit>1000</querySizeLimit>
          <init-dependencies>
            <dependency>dir1</dependency>
            <dependency>dir2</dependency>
          </init-dependencies>
          <references>
            <tableReference field="groups" directory="groupDirectory"
              table="user2group" sourceColumn="userId" targetColumn="groupId"
              schema="user2group" dataFile="user2group.csv" />
          </references>
          <permissions>
            <permission name="Read">
              <group>mygroup</group>
              <group>mygroup2</group>
              <user>Administrator</user>
            </permission>
            <permission name="Write">
              <group>mygroup3</group>
            </permission>
          </permissions>
        </directory>
      </code>
      Here is the description for each field:
      <ul>
        <li>
          schema - the name of the schema to be used for the directory
          entries.
        </li>
        <li>
          dataSource - the dataSource name, as registered in the
          application
          server.
        </li>
        <li>
          table - The name of the sql table where the directory data
          will be
          stored.
        </li>
        <li>
          idField - the id field designs the primary key in the table,
          used for
          retrieving entries by id.
        </li>
        <li>
          passwordField - the password field.
        </li>
        <li>
          passwordHashAlgorithm - the hash used to encode the password
          written
          in the database, either empty (default), SSHA or SMD5.
        </li>
        <li>
          autoincrementIdField - if this is set true, the SQLDirectory
          will
          fill the id field using a generated unique number,
          otherwise the client
          has to supply the id.
        </li>
        <li>
          dataFile - file from which to populate the table; the
          first line must
          contain the column names. This can be a csv, tsv, psv file.
          But you
          must take care of the dataFileCharacterSeparator to specify the
          character
          separator
        </li>
        <li>
          dataFileCharacterSeparator - character that separate each value
          if
          more than one character is set, the first one is gotten and other
          are
          skipped. The character is by default "," but you can set ";" or
          tabulation
        </li>
        <li>
          createTablePolicy - one of "never", "always" or
          "on_missing_columns"
          if this is set to "never", the table will
          never be created; if set to
          "always", the table will be
          created each time the application is
          started; if set to
          "on_missing_columns", the table will be created only
          if the
          schema declares some fields that are not present in the sql
          table.
        </li>
        <li>
          querySizeLimit - the maximum number of results that the
          queries on
          this directory should return; if there are more
          results than this, an
          exception will be raised.
        </li>
        <li>
          init-dependencies - a list of directories that should be
          initialized
          before this one
        </li>
        <li>
          nativeCase - false if table and column names should be used exactly
          as specificed in the configuration and schemas (quoted), true if
          they
          should be converted to database-native case (usually
          uppercase); the
          default is false for backward-compatibility.
        </li>
      </ul>
      The references tag is used to define relations between
      directories. (TODO:
      describe the references types.)
    </documentation>

    <object class="org.nuxeo.ecm.directory.sql.SQLDirectoryDescriptor" />
  </extension-point>

</component>